﻿#region Using Statements
using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using starLiGHT.ParticleSystem.Common;
using starLiGHT.ParticleSystem.twoD;
using Microsoft.Xna.Framework.Content;
using starLiGHT.ParticleSystem.PulseGenerators;
using starLiGHT.ParticleSystem.Initializer;
using starLiGHT.ParticleSystem.Initializer.TwoD;
using starLiGHT.ParticleSystem.Modifier;
using starLiGHT.ParticleSystem.Modifier.twoD;
#endregion

namespace starLiGHT.Sandbox.Particles
{
    public class Smoke : Emitter2D
    {
        public Smoke(ContentManager content)
            : base("Smoke")
        {
            PulseGenerator = new Steady(35);

            addInitializer(new TextureInitializer(content.Load<Texture2D>("SmokePlume")));
            addInitializer(new Position(new DiscRegion(new Vector2(400, 500), 20, 1)));
            addInitializer(new Velocity(new DiscRegion(Vector2.Zero, 25, 1)));
            addInitializer(new Lifetime(10f, 15f));
            addInitializer(new RotateVelocity(-1.25f, 1.25f));

            addModifier(new Age());
            addModifier(new Move());
            addModifier(new Rotate());
            //addModifier(new ChangeColor(Color.LightGray, Color.DarkGray));
            addModifier(new Accelerate(4.0f, -30f));
            addModifier(new Fade(0.5f, 0.0f));
            addModifier(new starLiGHT.ParticleSystem.Modifier.Scale(0.25f, 4.5f));
        }
    }
}
